 
struct queue_node
{
  struct queue_node *next;     
  struct proc_info *data;
};

struct queue
{
  struct queue_node *first;
  struct queue_node *last;
};

int enqueue(struct queue *q, const struct proc_info *value); /* returns 1 on memory error, 0 on success */
struct proc_info* dequeue(struct queue *q);      /* returns 1 if queue empty, else 0 */
void init_queue(struct queue *q);              /* prepares the queue */
int queue_empty_p(const struct queue *q);      /* returns 1 if queue empty, else 0 */


